package bitwiseOperation;

//https://leetcode.cn/problems/single-number-iii/
public class l_260 {
    public int[] singleNumber(int[] nums) {
        int res = 0, flag = 0;
        int[] ans = new int[2];
        for(int x: nums) res ^= x;
        flag = res & (-res); //标志两个出现一次的数不同的最右侧比特位
        for(int x: nums)
        {
            if((x & flag) != 0) //根据比特位进行分组
                ans[0] ^= x;
            else
                ans[1] ^= x;
        }
        return ans;
    }
}
